package n7.restaurant.java.Entity;

import java.util.Iterator;
import java.util.Vector;

import n7.restaurant.java.Enum.Acces;

import n7.restaurant.java.Enum.Role;
import n7.restaurant.java.Enum.TypePlat;
import n7.restaurant.java.Swing.AfficheurFixe;

public class Initialisation {
	public static final int NOM_CLIENT = 6;
	public static final int NOM_SERVEUR = 3;
	public static final int NOM_MENU = 3;
	public static final int NOM_APPRENDI = 3;
	public static final int NOM_INGREDIENT = 18;
	

	public static void init() {

		initClients();
		initServeurs();
		initPortesEtSalles();
		initIngredients();
		initMenus();
		initSpecialistes();
		initChefCuisine();
		initApprendis();
	}

	/**
	 * Ajuster la position d'image. Si la position de l'image est proche que le
	 * mur, il est ajuste.
	 * */
	public static Position ajusterPosition(Position position, Acces acces,
			int sizeImg) {
		// System.out.println("Before:" + position);
		switch (acces) {
		case SALLE_PRINCIPALE:
			if (position.getX() + (int) (sizeImg * 0.15) > Salle_Principale.salle_princiaple
					.getX2()) {
				position.setX(Salle_Principale.salle_princiaple.getX2()
						- (int) (sizeImg * 0.15));
			}
			if (position.getX() - (int) (sizeImg * 0.15) < Salle_Principale.salle_princiaple
					.getX1()) {
				position.setX(Salle_Principale.salle_princiaple.getX1()
						+ (int) (sizeImg * 0.15));
			}
			if (position.getY() + (int) (sizeImg * 0.15) > Salle_Principale.salle_princiaple
					.getY2()) {
				position.setY(Salle_Principale.salle_princiaple.getY2()
						- (int) (sizeImg * 0.15));
			}
			if (position.getY() - (int) (sizeImg * 0.15) < Salle_Principale.salle_princiaple
					.getY1()) {
				position.setY(Salle_Principale.salle_princiaple.getY1()
						+ (int) (sizeImg * 0.15));
			}
			break;
		case SALLE_CUISINE:
			if (position.getX() + (int) (sizeImg * 0.15) > Salle_Cuisine.salle_cuisine
					.getX2()) {
				position.setX(Salle_Cuisine.salle_cuisine.getX2()
						- (int) (sizeImg * 0.15));
			}
			if (position.getX() - (int) (sizeImg * 0.15) < Salle_Cuisine.salle_cuisine
					.getX1()) {
				position.setX(Salle_Cuisine.salle_cuisine.getX1()
						+ (int) (sizeImg * 0.15));
			}
			if (position.getY() + (int) (sizeImg * 0.15) > Salle_Cuisine.salle_cuisine
					.getY2()) {
				position.setY(Salle_Cuisine.salle_cuisine.getY2()
						- (int) (sizeImg * 0.15));
			}
			if (position.getY() - (int) (sizeImg * 0.15) < Salle_Cuisine.salle_cuisine
					.getY1()) {
				position.setY(Salle_Cuisine.salle_cuisine.getY1()
						+ (int) (sizeImg * 0.15));
			}
			break;
		case ENTREPOT_A:
			if (position.getX() + (int) (sizeImg * 0.15) > Entrepot.salles.get(
					0).getX2()) {
				position.setX(Entrepot.salles.get(0).getX2()
						- (int) (sizeImg * 0.15));
			}
			if (position.getX() - (int) (sizeImg * 0.15) < Entrepot.salles.get(
					0).getX1()) {
				position.setX(Entrepot.salles.get(0).getX1()
						+ (int) (sizeImg * 0.15));
			}
			if (position.getY() + (int) (sizeImg * 0.15) > Entrepot.salles.get(
					0).getY2()) {
				position.setY(Entrepot.salles.get(0).getY2()
						- (int) (sizeImg * 0.15));
			}
			if (position.getY() - (int) (sizeImg * 0.15) < Entrepot.salles.get(
					0).getY1()) {
				position.setY(Entrepot.salles.get(0).getY1()
						+ (int) (sizeImg * 0.15));
			}
			break;

		case ENTREPOT_B:
			if (position.getX() + (int) (sizeImg * 0.15) > Entrepot.salles.get(
					1).getX2()) {
				position.setX(Entrepot.salles.get(1).getX2()
						- (int) (sizeImg * 0.15));
			}
			if (position.getX() - (int) (sizeImg * 0.15) < Entrepot.salles.get(
					1).getX1()) {
				position.setX(Entrepot.salles.get(1).getX1()
						+ (int) (sizeImg * 0.15));
			}
			if (position.getY() + (int) (sizeImg * 0.15) > Entrepot.salles.get(
					1).getY2()) {
				position.setY(Entrepot.salles.get(1).getY2()
						- (int) (sizeImg * 0.15));
			}
			if (position.getY() - (int) (sizeImg * 0.15) < Entrepot.salles.get(
					1).getY1()) {
				position.setY(Entrepot.salles.get(1).getY1()
						+ (int) (sizeImg * 0.15));
			}
			break;
		case ENTREPOT_C:
			if (position.getX() + (int) (sizeImg * 0.15) > Entrepot.salles.get(
					2).getX2()) {
				position.setX(Entrepot.salles.get(2).getX2()
						- (int) (sizeImg * 0.15));
			}
			if (position.getX() - (int) (sizeImg * 0.15) < Entrepot.salles.get(
					2).getX1()) {
				position.setX(Entrepot.salles.get(2).getX1()
						+ (int) (sizeImg * 0.15));
			}
			if (position.getY() + (int) (sizeImg * 0.15) > Entrepot.salles.get(
					2).getY2()) {
				position.setY(Entrepot.salles.get(2).getY2()
						- (int) (sizeImg * 0.15));
			}
			if (position.getY() - (int) (sizeImg * 0.15) < Entrepot.salles.get(
					2).getY1()) {
				position.setY(Entrepot.salles.get(2).getY1()
						+ (int) (sizeImg * 0.15));
			}
			break;
		}
		return position;
	}

	/**
	 * Initialisation des clients.
	 * */
	public static void initClients() {
		for (int i = 0; i < NOM_CLIENT; i++) {
			Client c = new Client();
			c.setId("C" + i);
			Position p = new Position(10, 60 - 10 - 7 * i,
					Acces.SALLE_PRINCIPALE);
			c.setPosition(p);
			// initialiser les etat mentaux.
			// want(C01,demandeMenu(C01))
			c.getEtat_mentaux().add(new Etat_Mental("want", c, "demande_menu"));
			Client.clients.add(c);
			// System.out.println(c.toString());
		}
	}

	/**
	 * Initialisation des serveurs.
	 * */
	public static void initServeurs() {

		for (int i = 0; i < NOM_SERVEUR; i++) {
			Serveur s = new Serveur();
			s.setId("SV" + i);
			s.setRole(Role.SERVEUR);
			Position p = new Position(
					(Salle_Principale.LONGUEUR_SALLE_PRINCIPALE - 7),
					5 + i * 5, Acces.SALLE_PRINCIPALE);
			s.setPosition(p);
			Serveur.serveurs.add(s);

			// System.out.println(s.toString());
		}
	}

	/**
	 * Initialisation des apprendis.
	 * */
	public static void initApprendis() {

		for (int i = 0; i < NOM_APPRENDI; i++) {
			Apprendi a = new Apprendi();
			a.setId("AP" + i);
			a.setRole(Role.APPRENDI);
			Position p = new Position(
					(Salle_Principale.LONGUEUR_SALLE_PRINCIPALE
							+ Salle_Cuisine.LONGUEUR_SALLE_CUISINE - 10),
					10 + i * 10, Acces.SALLE_CUISINE);
			a.setPosition(p);
			Apprendi.apprendis.add(a);
			// System.out.println(s.toString());
		}
	}

	/**
	 * Initialisation des portes et salles.
	 * */
	public static void initPortesEtSalles() {

		Porte porte_1 = new Porte(30, 30, 25, 15);
		porte_1.addAcces(Acces.SALLE_PRINCIPALE);
		porte_1.addAcces(Acces.SALLE_CUISINE);
		Porte porte_2 = new Porte(38, 42, 40, 40);
		porte_2.addAcces(Acces.ENTREPOT_A);
		porte_2.addAcces(Acces.SALLE_CUISINE);
		Porte porte_3 = new Porte(58, 62, 40, 40);
		porte_3.addAcces(Acces.ENTREPOT_B);
		porte_3.addAcces(Acces.SALLE_CUISINE);
		Porte porte_4 = new Porte(78, 82, 40, 40);
		porte_4.addAcces(Acces.ENTREPOT_C);
		porte_4.addAcces(Acces.SALLE_CUISINE);
		// ajouter les portes dans la liste(static) qui est contenu dans la
		// class Porte
		Porte.portes.add(porte_1);
		Porte.portes.add(porte_2);
		Porte.portes.add(porte_3);
		Porte.portes.add(porte_4);

		Salle_Principale salle_principale = new Salle_Principale(0, 30, 0, 60);
		Salle_Principale.salle_princiaple = salle_principale;
		salle_principale.addPorte(porte_1);

		Salle_Cuisine salle_cuisine = new Salle_Cuisine(30, 90, 0, 40);
		salle_cuisine.addPorte(porte_1);
		salle_cuisine.addPorte(porte_2);
		salle_cuisine.addPorte(porte_3);
		salle_cuisine.addPorte(porte_4);
		Salle_Cuisine.salle_cuisine = salle_cuisine;

		Entrepot entrepot_1 = new Entrepot(30, 50, 40, 60);
		entrepot_1.addPorte(porte_2);

		Entrepot entrepot_2 = new Entrepot(50, 70, 40, 60);
		entrepot_2.addPorte(porte_3);

		Entrepot entrepot_3 = new Entrepot(70, 90, 40, 60);
		entrepot_3.addPorte(porte_4);

		Entrepot.salles.add(entrepot_1);
		Entrepot.salles.add(entrepot_2);
		Entrepot.salles.add(entrepot_3);
		Entrepot.entrepots.add(entrepot_1);
		Entrepot.entrepots.add(entrepot_2);
		Entrepot.entrepots.add(entrepot_3);

		// ajouter tous les salle dans la liste qui est contenu dans la class
		// Salle.
		Salle.salles.add(salle_principale);
		Salle.salles.add(salle_cuisine);
	}

	/**
	 * Inicialisation des menus.
	 * */
	public static void initIngredients() {

		Ingredient i;
		Vector<Ingredient> ingredientA = Entrepot.entrepots.get(0)
				.getIngredients();
		Vector<Ingredient> ingredientB = Entrepot.entrepots.get(1)
				.getIngredients();
		Vector<Ingredient> ingredientC = Entrepot.entrepots.get(2)
				.getIngredients();

		Position p = new Position((int) (50 + Math.random()
				* Entrepot.LONGUEUR_SALLE_ENTREPOT), (int) (40 + Math.random()
				* Entrepot.LARGEUR_SALLE_ENTREPOT), Acces.ENTREPOT_B);
		p = ajusterPosition(p, Acces.ENTREPOT_B,
				AfficheurFixe.LARGEUR_IMG_INGREDIENT);
		i = new Ingredient("tomate", p);
		Ingredient.ingredients.add(i);
		ingredientB.add(i);

		p = new Position((int) (70 + Math.random()
				* Entrepot.LONGUEUR_SALLE_ENTREPOT), (int) (40 + Math.random()
				* Entrepot.LARGEUR_SALLE_ENTREPOT), Acces.ENTREPOT_C);
		p = ajusterPosition(p, Acces.ENTREPOT_C,
				AfficheurFixe.LARGEUR_IMG_INGREDIENT);
		i = new Ingredient("mozzarella", p);
		Ingredient.ingredients.add(i);
		ingredientC.add(i);

		p = new Position((int) (30 + Math.random()
				* Entrepot.LONGUEUR_SALLE_ENTREPOT), (int) (40 + Math.random()
				* Entrepot.LARGEUR_SALLE_ENTREPOT), Acces.ENTREPOT_A);
		p = ajusterPosition(p, Acces.ENTREPOT_A,
				AfficheurFixe.LARGEUR_IMG_INGREDIENT);
		i = new Ingredient("oeuf", p);
		Ingredient.ingredients.add(i);
		ingredientA.add(i);

		p = new Position((int) (70 + Math.random()
				* Entrepot.LONGUEUR_SALLE_ENTREPOT), (int) (40 + Math.random()
				* Entrepot.LARGEUR_SALLE_ENTREPOT), Acces.ENTREPOT_C);
		p = ajusterPosition(p, Acces.ENTREPOT_C,
				AfficheurFixe.LARGEUR_IMG_INGREDIENT);
		i = new Ingredient("bacon", p);
		Ingredient.ingredients.add(i);
		ingredientC.add(i);

		p = new Position((int) (30 + Math.random()
				* Entrepot.LONGUEUR_SALLE_ENTREPOT), (int) (40 + Math.random()
				* Entrepot.LARGEUR_SALLE_ENTREPOT), Acces.ENTREPOT_A);
		p = ajusterPosition(p, Acces.ENTREPOT_A,
				AfficheurFixe.LARGEUR_IMG_INGREDIENT);
		i = new Ingredient("poivron_jaune", p);
		Ingredient.ingredients.add(i);
		ingredientA.add(i);

		p = new Position((int) (50 + Math.random()
				* Entrepot.LONGUEUR_SALLE_ENTREPOT), (int) (40 + Math.random()
				* Entrepot.LARGEUR_SALLE_ENTREPOT), Acces.ENTREPOT_B);
		p = ajusterPosition(p, Acces.ENTREPOT_B,
				AfficheurFixe.LARGEUR_IMG_INGREDIENT);
		i = new Ingredient("champignon", p);
		Ingredient.ingredients.add(i);
		ingredientB.add(i);

		p = new Position((int) (70 + Math.random()
				* Entrepot.LONGUEUR_SALLE_ENTREPOT), (int) (40 + Math.random()
				* Entrepot.LARGEUR_SALLE_ENTREPOT), Acces.ENTREPOT_C);
		p = ajusterPosition(p, Acces.ENTREPOT_C,
				AfficheurFixe.LARGEUR_IMG_INGREDIENT);
		i = new Ingredient("choux_blanc", p);
		Ingredient.ingredients.add(i);
		ingredientC.add(i);

		p = new Position((int) (50 + Math.random()
				* Entrepot.LONGUEUR_SALLE_ENTREPOT), (int) (40 + Math.random()
				* Entrepot.LARGEUR_SALLE_ENTREPOT), Acces.ENTREPOT_B);
		p = ajusterPosition(p, Acces.ENTREPOT_B,
				AfficheurFixe.LARGEUR_IMG_INGREDIENT);
		i = new Ingredient("veau", p);
		Ingredient.ingredients.add(i);
		ingredientB.add(i);

		p = new Position((int) (30 + Math.random()
				* Entrepot.LONGUEUR_SALLE_ENTREPOT), (int) (40 + Math.random()
				* Entrepot.LARGEUR_SALLE_ENTREPOT), Acces.ENTREPOT_A);
		p = ajusterPosition(p, Acces.ENTREPOT_A,
				AfficheurFixe.LARGEUR_IMG_INGREDIENT);
		i = new Ingredient("oignon", p);
		Ingredient.ingredients.add(i);
		ingredientA.add(i);

		p = new Position((int) (30 + Math.random()
				* Entrepot.LONGUEUR_SALLE_ENTREPOT), (int) (40 + Math.random()
				* Entrepot.LARGEUR_SALLE_ENTREPOT), Acces.ENTREPOT_A);
		p = ajusterPosition(p, Acces.ENTREPOT_A,
				AfficheurFixe.LARGEUR_IMG_INGREDIENT);
		i = new Ingredient("carotte", p);
		Ingredient.ingredients.add(i);
		ingredientA.add(i);

		p = new Position((int) (30 + Math.random()
				* Entrepot.LONGUEUR_SALLE_ENTREPOT), (int) (40 + Math.random()
				* Entrepot.LARGEUR_SALLE_ENTREPOT), Acces.ENTREPOT_A);
		p = ajusterPosition(p, Acces.ENTREPOT_A,
				AfficheurFixe.LARGEUR_IMG_INGREDIENT);
		i = new Ingredient("lait", p);
		Ingredient.ingredients.add(i);
		ingredientA.add(i);

		p = new Position((int) (50 + Math.random()
				* Entrepot.LONGUEUR_SALLE_ENTREPOT), (int) (40 + Math.random()
				* Entrepot.LARGEUR_SALLE_ENTREPOT), Acces.ENTREPOT_B);
		p = ajusterPosition(p, Acces.ENTREPOT_B,
				AfficheurFixe.LARGEUR_IMG_INGREDIENT);
		i = new Ingredient("cafe", p);
		Ingredient.ingredients.add(i);
		ingredientB.add(i);

		p = new Position((int) (50 + Math.random()
				* Entrepot.LONGUEUR_SALLE_ENTREPOT), (int) (40 + Math.random()
				* Entrepot.LARGEUR_SALLE_ENTREPOT), Acces.ENTREPOT_B);
		p = ajusterPosition(p, Acces.ENTREPOT_B,
				AfficheurFixe.LARGEUR_IMG_INGREDIENT);
		i = new Ingredient("rouget", p);
		Ingredient.ingredients.add(i);
		ingredientB.add(i);

		p = new Position((int) (50 + Math.random()
				* Entrepot.LONGUEUR_SALLE_ENTREPOT), (int) (40 + Math.random()
				* Entrepot.LARGEUR_SALLE_ENTREPOT), Acces.ENTREPOT_B);
		p = ajusterPosition(p, Acces.ENTREPOT_B,
				AfficheurFixe.LARGEUR_IMG_INGREDIENT);
		i = new Ingredient("poivron_rouge", p);
		Ingredient.ingredients.add(i);
		ingredientB.add(i);

		p = new Position((int) (70 + Math.random()
				* Entrepot.LONGUEUR_SALLE_ENTREPOT), (int) (40 + Math.random()
				* Entrepot.LARGEUR_SALLE_ENTREPOT), Acces.ENTREPOT_C);
		p = ajusterPosition(p, Acces.ENTREPOT_C,
				AfficheurFixe.LARGEUR_IMG_INGREDIENT);
		i = new Ingredient("creme", p);
		Ingredient.ingredients.add(i);
		ingredientC.add(i);

		p = new Position((int) (70 + Math.random()
				* Entrepot.LONGUEUR_SALLE_ENTREPOT), (int) (40 + Math.random()
				* Entrepot.LARGEUR_SALLE_ENTREPOT), Acces.ENTREPOT_C);
		p = ajusterPosition(p, Acces.ENTREPOT_C,
				AfficheurFixe.LARGEUR_IMG_INGREDIENT);
		i = new Ingredient("poivron_vert", p);
		Ingredient.ingredients.add(i);
		ingredientC.add(i);

		p = new Position((int) (30 + Math.random()
				* Entrepot.LONGUEUR_SALLE_ENTREPOT), (int) (40 + Math.random()
				* Entrepot.LARGEUR_SALLE_ENTREPOT), Acces.ENTREPOT_A);
		p = ajusterPosition(p, Acces.ENTREPOT_A,
				AfficheurFixe.LARGEUR_IMG_INGREDIENT);
		i = new Ingredient("pomme", p);
		Ingredient.ingredients.add(i);
		ingredientA.add(i);

		p = new Position((int) (30 + Math.random()
				* Entrepot.LONGUEUR_SALLE_ENTREPOT), (int) (40 + Math.random()
				* Entrepot.LARGEUR_SALLE_ENTREPOT), Acces.ENTREPOT_A);
		p = ajusterPosition(p, Acces.ENTREPOT_A,
				AfficheurFixe.LARGEUR_IMG_INGREDIENT);
		i = new Ingredient("citron", p);
		Ingredient.ingredients.add(i);
		ingredientA.add(i);
	}

	/**
	 * Initialisation des menus.
	 * */
	public static void initMenus() {
		Menu[] menus = new Menu[3];
		menus[0] = new Menu();
		menus[1] = new Menu();
		menus[2] = new Menu();

		// Plat_1 & Menu[0] 0
		Entree entree = new Entree();
		entree.setNom("tomate_mozzarella");
		entree.getIngredients().add("tomate");
		entree.getIngredients().add("mozzarella");
		entree.setDuree(10000);
		entree.setType(TypePlat.entree);
		Plat.plats.add(entree);
		Entree.entree.add(entree);
		menus[0].addPlat(entree);

		// Plat_2 & Menu[1] 0
		entree = new Entree();
		entree.setNom("oeuf_cocotte");
		entree.getIngredients().add("oeuf");
		entree.getIngredients().add("bacon");
		entree.setDuree(12000);
		entree.setType(TypePlat.entree);
		Plat.plats.add(entree);
		Entree.entree.add(entree);
		menus[1].addPlat(entree);

		// Plat_3 & Menu[2] 0
		entree = new Entree();
		entree.setNom("coleslaw");
		entree.getIngredients().add("choux_blanc");
		entree.getIngredients().add("carotte");
		entree.setDuree(10000);
		entree.setType(TypePlat.entree);
		Plat.plats.add(entree);
		Entree.entree.add(entree);
		menus[2].addPlat(entree);

		// Plat_4 & Menu[0] 1
		Plat_Principal pp = new Plat_Principal();
		pp.setNom("filet_rouget");
		pp.getIngredients().add("rouget");
		pp.getIngredients().add("poivron_vert");
		pp.getIngredients().add("poivron_rouge");
		pp.getIngredients().add("poivron_jaune");
		pp.setDuree(15000);
		pp.setType(TypePlat.plat_principal);
		Plat.plats.add(pp);
		Plat_Principal.pps.add(pp);
		menus[0].addPlat(pp);
		// Plat_5 & Menu[1] 1
		pp = new Plat_Principal();
		pp.setNom("roti_de_veau");
		pp.getIngredients().add("veau");
		pp.getIngredients().add("carotte");
		pp.getIngredients().add("oignon");
		pp.setDuree(20000);
		pp.setType(TypePlat.plat_principal);
		Plat.plats.add(pp);
		Plat_Principal.pps.add(pp);
		menus[1].addPlat(pp);

		// Plat_6 & Menu[2] 1
		pp = new Plat_Principal();
		pp.setNom("pizza_champignon");
		pp.getIngredients().add("mozzarella");
		pp.getIngredients().add("champignon");
		pp.getIngredients().add("tomate");
		pp.setDuree(18000);
		pp.setType(TypePlat.plat_principal);
		Plat.plats.add(pp);
		Plat_Principal.pps.add(pp);
		menus[2].addPlat(pp);

		// Plat_7 & Menu[0] 2
		Dessert d = new Dessert();
		d = new Dessert();
		d.setNom("gateau_pomme");
		d.getIngredients().add("pomme");
		d.getIngredients().add("oeuf");
		d.getIngredients().add("citron");
		d.setDuree(5000);
		d.setType(TypePlat.dessert);
		Plat.plats.add(d);
		Dessert.desserts.add(d);
		menus[0].addPlat(d);

		// Plat_8 & Menu[1] 2
		d = new Dessert();
		d.setNom("glace_cafe");
		d.getIngredients().add("oeuf");
		d.getIngredients().add("lait");
		d.getIngredients().add("cafe");
		d.setDuree(5000);
		d.setType(TypePlat.dessert);
		Plat.plats.add(d);
		Dessert.desserts.add(d);
		menus[1].addPlat(d);

		// Plat_9 & Menu[2] 2
		d = new Dessert();
		d.setNom("creme_brulee");
		d.getIngredients().add("oeuf");
		d.getIngredients().add("lait");
		d.getIngredients().add("creme");
		d.setDuree(5000);
		d.setType(TypePlat.dessert);
		Plat.plats.add(d);
		Dessert.desserts.add(d);
		menus[2].addPlat(d);

		menus[0].setId("M0");
		menus[1].setId("M1");
		menus[2].setId("M2");

		Menu.menus.add(menus[0]);
		Menu.menus.add(menus[1]);
		Menu.menus.add(menus[2]);
		/*
		 * System.out.println(menus[0].getPlats().get(0).getNom());
		 * System.out.println(menus[1].getPlats().get(0).getNom());
		 * System.out.println(menus[2].getPlats().get(0).getNom());
		 */
	}

	/**
	 * Initialisation le chef de cuisine.
	 * */
	public static void initChefCuisine() {
		Chef chef = new Chef();
		chef.setId("GC0");
		chef.setRole(Role.GRAND_CHEF);
		Position p = new Position(
				(int) (Salle_Cuisine.salle_cuisine.getX1() + Math.random()
						* Salle_Cuisine.LONGUEUR_SALLE_CUISINE),
				(int) (Salle_Cuisine.salle_cuisine.getY1() + Math.random()
						* Salle_Cuisine.LARGEUR_SALLE_CUISINE),
				Acces.SALLE_CUISINE);
		p = ajusterPosition(p, Acces.SALLE_CUISINE,
				AfficheurFixe.LARGEUR_IMG_GRAND_CHEF);
		chef.setPosition(p);
		for (Iterator<Specialiste> i = Specialiste.specialistes.iterator(); i
				.hasNext();) {
			Specialiste s = i.next();
			chef.addEtatMental(new Etat_Mental("knowref", chef, "capacite("
					+ s.getId() + ")=" + s.getCapacite()));
		}
		Chef.grand_chef = chef;
	}

	/**
	 * Initialisations des specialistes
	 */
	public static void initSpecialistes() {

		Specialiste specialiste_1 = new Specialiste();
		specialiste_1.setId("SP0");
		specialiste_1.setRole(Role.SPECIALISTE);
		specialiste_1.setPosition(new Position(50, 15, Acces.SALLE_CUISINE));
		specialiste_1.setCapacite(TypePlat.entree);

		Specialiste specialiste_2 = new Specialiste();
		specialiste_2.setId("SP1");
		specialiste_2.setRole(Role.SPECIALISTE);
		specialiste_2.setPosition(new Position(60, 15, Acces.SALLE_CUISINE));
		specialiste_2.setCapacite(TypePlat.plat_principal);

		Specialiste specialiste_3 = new Specialiste();
		specialiste_3.setId("SP2");
		specialiste_3.setRole(Role.SPECIALISTE);
		specialiste_3.setPosition(new Position(70, 15, Acces.SALLE_CUISINE));
		specialiste_3.setCapacite(TypePlat.dessert);

		// Ajoute les specialiste dans la liste qui contenu dans la class
		// Specialiste
		Specialiste.specialistes.add(specialiste_1);
		Specialiste.specialistes.add(specialiste_2);
		Specialiste.specialistes.add(specialiste_3);
	}
}
